﻿# -*- coding: utf-8 -*-
#!/usr/bin/python

#------------------------------------------------------------------------

## @package     porte
## \brief       gestion du type abstrait "porte"
## \author      Pierrick Troadec et Kawtar Hssain
## \date        28/12/2011
## \version     1.2
## \copyright   license BSD

#------------------------------------------------------------------------

#    Importations
#  -----------------

from constante import *
import primitives as prims

#   Fonctions
#  -----------------

## Constructeur du type abstrait "porte"
##@param flag   : position de la porte sur les mur de la piece
##@param ouvert : indique si la porte est ouverte ou non 
##@return porte : porte initialisée
def creerPorte(flag = 0, ouvert = True) :
    

    porte = {}
    
    porte["flag"]     = flag
    porte["ouverte"] = ouvert
    
    return porte

## Affiche une porte
##@param piece : pièce contenant la porte
##@param porte : porte à afficher
##@param rep   : répétition de la texture de la porte
def dessinerPorte(piece, porte, rep = 1):

    x = piece["position"][0]
    z = piece["position"][2]
    w = piece["largeur"]
    w2 = piece["longueur"]
    
    flag = porte["flag"]
    ouvert = porte["ouverte"]
    
    if flag&1 and not ouvert:
             prims.afficherRectangle(position=(x, 0.0, z+w2),angle=0.0,dimensions=(2, 2),texture=texturePorte, rep=rep) 
    
    elif flag>>1&1 and not ouvert:
            prims.afficherRectangle(position=(x, 0.0, z),angle=0.0,dimensions=(2, 2),texture=texturePorte, rep=rep) 
            
    elif flag>>2&1 and not ouvert:
            prims.afficherRectangle(position=(x-w/2, 0.0, z+w2/2),angle=90.0,dimensions=(2, 2),texture=texturePorte, rep=rep) 
            
    elif flag>>3&1 and not ouvert:
            prims.afficherRectangle(position=(x+w/2, 0.0, z+w2/2),angle=-90.0,dimensions=(2, 2),texture=texturePorte, rep=rep) 
